#ifndef __CELL_H__
#define __CELL_H__
/// the basic unit of a Soduku
class Cell
{
public:
  explicit Cell(int max); ///< constructor
  ~Cell(); ///< destructor
private:
  int _value; ///< solution for this cell. It is a solution if and only if _value!=0
  int* _candidate; ///< list of possible values for this cell
  int _num_candidates; ///< number of candidates
  int _max; ///< _value can be one of {1,2,...,_max}
public:
  int num_candidates() const {return _num_candidates;} ///< return number of candidates
  int max() const {return _max;} ///< return the maximum number
  void add_candidate(int value); ///< add 1 candidate
};
#endif // __CELL_H__
